perm filename FLTR.F4[SCR,LCS]1 blob
sn#203385 filedate 1976-02-25 generic text, type T, neo UTF8
00100
00200 SUBROUTINE SUBR
00300 DIMENSION PX(30)
00400 COMMON /INS/ INST(27),BG(60)
00500 COMMON P(30),INUM,IPAR,CNT(27),BT,PL(48),IREST,DF,DUR(27)
00600 C INUM=INST# IPAR=PARAM#
00700 C BT=BASIC TIME P1 WHEN SUBROUTINE IS CALLED
00800 C IF IREST IS <0, THAT NOTE WILL BE A REST.
00900 C INST=INST. NAME, BG=INSTS' BEGIN TIMES.
01000 C NOTE #S IN SUBROUTINE: (1-84) C4=37 FS4=43 C5=49 ETC.
01100 C F1=86 F15=100 (NO F16!)
01200
01300 IF(INUM.NE.1)GO TO 1
01400 X=P(3)
01500 C WE'LL SAVE THE FREQ. IN X.
01600 IF(PL(3).EQ.1)RETURN
01700 C NEXT FOR LETTER NAMED NOTES
01800 X=IFIX(X)
01900 C FIX THE NOTE NUM. IN CASE IT WAS RANDOMLY SELECTED.
02000 X=30.8677*2**(X/12.)
02100 RETURN
02200
02300 C NEXT SETS UP SYNTH VALUES.
02400 1 S=P(29)*500.
02500 C HALF THE SAMPLE RATE.
02600 P(29)=999.
02700 C 999 TO CONCLUDE SYNTH INPUT TO MUSIC PROG.
02800 K=S/X
02900 C HOW MANY TIMES WILL THE FREQ. FIT INTO THE SRATE.
03000 IF(K.LT.14)GO TO 3
03100 4 IF(BT.GT.0)IREST=-1
03200 C GIVE INVIS. "INSTRUMENT" A REST IF NO CHANGE.
03300 RETURN
03310 C RETURN IF THEY ALL FIT
03400 3 J=(K-2)*2
03500 C FOR DO-LOOP BELOW
03600 F=1.0
03700 DO 2 L=J,28,2
03710 F=F-.25
03750 IF(L.LT.4)GO TO 2
03780 IF(F.LE.0)GO TO 20
03800 P(L)=P(L)*F
03900 C SCALE DOWN THIS HARMONIC
04000 GO TO 2
04200 20 P(L)=0
04300 C ZERO OUT THIS HARMONIC
04400 2 CONTINUE
04500 C NEXT TO SAVE TIME IN THE MUSIC PROGRAM.
04600 DO 5 K=4,28,2
04700 C JUMP OUT OF LOOP IF SOME CHANGE IS ENCOUNTERED.
04800 5 IF(P(K).NE.PX(K))GO TO 6
04900 GO TO 4
05000 C TURN IT INTO A REST IF NO CHANGES FROM LAST TIME
05100
05200 6 DO 7 L=K,28,2
05300 7 PX(L)=P(L)
05400 C SAVE VALUES FOR NEXT TIME AROUND.
05500 RETURN